class Solution {
public:
    int findPeakElement(vector<int>& arr) {
        // 虽然整个数组不是有序的，但是根据单调性可以分出二段性
        // 这里利用二段性把mid归到递增部分，下面就是找右端点：
        int left = 0, right = arr.size() - 1;
        while(left < right)
        {
            int mid = left + (right - left + 1) / 2;
            if(arr[mid] < arr[mid - 1]) // 如果是递减部分
            {
                right = mid - 1;
            }
            else
            {
                left = mid;
            }
        }
        return left;
    }
};